Epochal Time Model
https://gyazo.com/f399f9875fcd36ecda288ab416a12ff0
mrsekut.iconが知らんだけか
Identityがでかいのがわかりにくい
valueを参照してる感じで書けばいいのに、と思った
用語
identity
stateが変化しても同一のもの
immutableである
value
これもimmutableである
state
stateとは、ある時点でのidentityのvalueである
同一のidentityと、複数のvalueの対応付けのこと
valueがimmutableなので、stateもimmutableである
故に、(valueを削除していなければ)いつでも過去のstateを参照できることになる
参照するvalueを切り替えれば、「stateが変わったこと」になる
例
「過去の私」と「現在の私」と言う場合
私はidentity
年齢(1,2,...,20)はそれぞれvalue
状態は(私,1)とか(私, 2)とか
一方でOOPでは
identityとstateが密結合
故に状態を安易に変更できる
これは彼らが使う言語のせいだ。そういった言語では、アイデンティティやオブジェクトと同様に値を扱うためデフォルトで書き換え可能であり、そのため特に卓越したプログラマーでない限り、アイデンティティを作りすぎたり、値にするのが適切なものをアイデンティティにしてしまうのだ。ref 後付けで、DDDのEntityとかも提唱されてきたが、それを表現するツールとしてclassが適切でないだろうことは明らかmrsekut.icon Entityは、immutableでなことができるはずのclassを、こっちの方がいいからという理由でmutableにしている
良い設計をするために「知識」が必要になる
「DDDの知識」がない人はそういう発想をしないほうが普通
ツールが悪い
alter
commute
send
atom, agent
ながすぎ
参考